前兩天我們介紹了介面以及功能性介面
今天則要繼續介紹擴充(Extensions)
擴充這個概念允許我們在類別以及介面增加新的函式,而不用繼承或修改原本的類別或是介面
這使得我們在使用第三方提供的類別或介面時更為便利(由於無法去改動)
如下這個範例將swap函式加到MutableList
fun MutableList<Int>.swap(index1: Int, index2: Int) {
val tmp = this[index1] // 'this' corresponds to the list
this[index1] = this[index2]
this[index2] = tmp
}
擴充的作用範圍
大部分情況下,我們會將擴充定義在package下
若要在宣告的package以外去使用
則要再補上import
如下為原本擴充定義的位置
package org.example.declarations
fun List<String>.getLongestString() { /*...*/}
以下則是在宣告的package以外使用的範例
package org.example.usage
import org.example.declarations.getLongestString
fun main() {
val list = listOf("red", "green", "blue")
list.getLongestString()
}